/**
 * Chapter 6
 * 6.2 段 编程挑战 查看可执行文件中的段
 *
 * 初始化后的全局和静态变量存放在data segment
 * 未初始化的放在bss segment，但bss segment并不保存在目标文件中
 * 这部分变量在目标文件加载进内存中时，根据bss segment的大小在操作系统中开辟对应大小的bss segment
 * 当这个内存区进入程序的地址空间后全部清0
 * 这些变量在编译阶段初始化
 * 局部变量不进入可执行文件，它们在运行时创建
 * text segment保存可执行文件的指令
 * bss segment不占据目标文件的空间
 **/
#include <stdio.h>
#include <stdlib.h>

char            pear[40];
static double   peach;
int             mango = 13;
static long     melon = 2001;

int main(void)
{
    int i = 3, j, *ip;
    ip = malloc(sizeof i);
    pear[5] = i;
    static int test_static_in_data_segment;
    printf("%d\n", test_static_in_data_segment);
    peach = 2.0 * mango;
}